MOVSB Пересылка строки из байтов

Флаги не меняются.

Команда:

MOVSB

Логика:

(ES:DI) = (DS:SI)
                     if DF = 0
                         SI = SI + 1
                         DI = DI + 1
                     else
                         SI = SI - 1
                         DI = DI - 1 

Эта команда пересылает байт, расположенный по адресу DS:SI, по адресу ES:DI. После пересылки SI и DI инкрементируются (если флаг направления сброшен) или декрементируются (если флаг направления установлен),чтобы указатель переместился на следующий байт.

Операнды Такт байты (слова)ОбращенияБайтыПример
нет операндов 18 21MOVSB
(повтор)9+17/rep 2/rep1REP MOVSB

Пример.
Предположим, что строка BUFFER1 была где-то в программе описана следующим образом:

BUFFER1       DB      100 DUP (?)

Тогда следующий пример описывает пересылку 100 байтов из BUFFER1 в BUFFER2:

CLD                 		;Двигаемся в прямом направлении
LEA     SI,BUFFER1  		;Адрес исходной строки засылаем в SI
LEA     DI,BUFFER2  		;Адрес строки назначения засылаем в DI
MOV     CX,100      		;CX используем в префиксе REP
REP  MOVSB               		;Производим пересылку
Hosted by uCoz